
#竖直上抛模型分析
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
font = {'family': 'SimHei'}
matplotlib.rc('font', **font)
plt.rcParams['axes.unicode_minus']=False

v=10   #上抛初速
k=1   #空气阻力系数
f=k*v   #阻力
m=0.2
g=10
a=0
t=0
x=0
dt=0.0001
flag=1
list1=[]  #t
list2=[]  #v
while v>0:
    a=-f/m-g
    list1.append(t)
    list2.append(v)
    v+=a*dt
    f=k*v
    t+=dt
    x=x+v*dt
t1=t
v1=v
E0=10
E=m*g*x+0.5*m*v1**2
q=(1-E/E0)*100
print('到达最高点时刻：',end='')
print('%.2f' %(t1),'s')
print('上抛最大高度：',end='')
print('%.2f' %(x),'m')
print('能量损失率：',end='')
print('%.2f' %(q),'%')
while x>0:
    a=-f/m-g
    list1.append(t)
    list2.append(v)
    v+=a*dt
    f=k*v
    t+=dt
    x=x+v*dt
list1.append(t)
list2.append(v)
t2=t
v2=v
E=0.5*m*v2**2
q=(1-E/E0)*100
print('到达最低点时刻：',end='')
print('%.2f' %(t2),'s')
print('落回抛出点时的速度：',end='')
print('%.2f' %(v2),'m/s')
print('能量损失率：',end='')
print('%.2f' %(q),'%')
plt.plot(list1,list2)
plt.title('竖直上抛v-t曲线')
plt.xlabel('t-s')
plt.ylabel('v-m/s')
plt.scatter(0,10,color='r')
plt.scatter(t1,v1,color='r')
plt.scatter(t2,v2,color='r')
plt.vlines(t2,0,v2,color='r',linestyles='dashed')
plt.hlines(v2,0,t2,color='r',linestyles='dashed')
plt.plot(np.linspace(0,2,50),[0 for i in range(50)])
plt.plot([0 for i in range(50)],np.linspace(-2,10,50))
plt.savefig('sp.jpg')
#加入横轴、纵轴
# list3=[]
# list4=[]
# x=0
# y=0
# while x<t2+0.2:
#     list3.append(x)
#     list4.append(y)
#     x+=0.01
# plt.plot(list3,list4)
# list5=[]
# list6=[]
# x1=0
# y1=11
# while y1<=11 and y1>v2-0.5:
#     list5.append(x1)
#     list6.append(y1)
#     y1-=0.01
# plt.plot(list5,list6)

plt.show()

'''
#------------------------------a-t图-------------------------
v=10   #上抛初速
k=1   #空气阻力系数
f=k*v   #阻力
m=0.2
g=10
a=-f/m-g
t=0
x=0
dt=0.0001
flag=1
list1=[]  #t
list2=[]  #a
while v>0:
    list1.append(t)
    list2.append(a)
    a=-f/m-g
    v+=a*dt
    f=k*v
    t+=dt
    x=x+v*dt
t1=t
a1=a

while x>0:
    list1.append(t)
    list2.append(a)
    a=-f/m-g
    v+=a*dt
    f=k*v
    t+=dt
    x=x+v*dt
list1.append(t)
list2.append(a)
t2=t
a2=a

plt.plot(list1,list2)
plt.title('a-t')
plt.xlabel('t-s')
plt.ylabel('a-m/s^2')
plt.scatter(0,-60,color='r')
plt.scatter(t1,a1,color='r')
plt.vlines(t1,0,a1,color='r',linestyles='dashed')
plt.hlines(a1,0,t1,color='r',linestyles='dashed')
plt.scatter(t2,a2,color='r')

#加入横轴、纵轴
list3=[]
list4=[]
x=0
y=0
while x<t2+0.2:
    list3.append(x)
    list4.append(y)
    x+=0.01
plt.plot(list3,list4)
list5=[]
list6=[]
x1=0
y1=0
while y1>-65:
    list5.append(x1)
    list6.append(y1)
    y1-=0.01
plt.plot(list5,list6)

plt.show()
'''

#-------------------------------x-t图-------------------
v=10   #上抛初速
k=1   #空气阻力系数
f=k*v   #阻力
m=0.2
g=10
a=-f/m-g
t=0
x=0
dt=0.0001
flag=1
list1=[]  #t
list2=[]  #x
while v>0:
    list1.append(t)
    list2.append(x)
    a=-f/m-g
    v+=a*dt
    f=k*v
    t+=dt
    x=x+v*dt
t1=t
x1=x

while x>0:
    list1.append(t)
    list2.append(x)
    a=-f/m-g
    v+=a*dt
    f=k*v
    t+=dt
    x=x+v*dt
list1.append(t)
list2.append(x)
t2=t

plt.plot(list1,list2)
plt.title('竖直上抛x-t曲线')
plt.xlabel('t-s')
plt.ylabel('x-m')
plt.scatter(0,0,color='r')
plt.scatter(t1,x1,color='r')
plt.vlines(t1,0,x1,color='r',linestyles='dashed')
plt.hlines(x1,0,t1,color='r',linestyles='dashed')
plt.scatter(t2,0,color='r')

#加入横轴、纵轴
list3=[]
list4=[]
x=0
y=0
while x<t2+0.2:
    list3.append(x)
    list4.append(y)
    x+=0.01
plt.plot(list3,list4)
list5=[]
list6=[]
x1=0
y1=0
while y1<1.5:
    list5.append(x1)
    list6.append(y1)
    y1+=0.01
plt.plot(list5,list6)
plt.savefig('sp1.jpg')
plt.show()

